<html>
<head>

<meta name="keywords"
content="GEF, Graph Editing Framework, Diagrams, ArgoUML, software engineering, CASE, Java, XML, SVG">

<style type="text/css">
/* <![CDATA[ */
@import url(http://www.tigris.org/branding/css/ns4_toxins.css);
/* ]]> */
</style>
 <link rel="stylesheet" type="text/css" href="http://www.tigris.org/branding/css/main.css" media="screen" />
 <link rel="stylesheet" type="text/css" href="http://www.tigris.org/branding/css/print.css" media="print" />

<title>Vision</title>

</head>
<body>

<div class="app">

<h3>Vision</h3>

<p>GEF stands for Graph Editing Framework.  It is a library of Java
classes that make it easier to develop new applications that involve
editing diagrams and connected graphs.  Graph editing is required for
many software engineering and network engineering tools that deal with
models of software or networks.  Diagram or graph editing can also be
used in applications such as home design, business process modeling,
organization charts, family trees, or even games.</p>

<p>Java's Swing user interface library includes widgets for windows,
buttons, text, menus, tables, and trees.  These are used in every
application that has a GUI.  However, Swing does not provide support
for diagram or graph editing.</p>

<p>The GEF vision is to produce a reusable framework for diagram and
connected graph editing.  The key qualities for the success of this
project are:</p>

<ol>
 <li>Simplicity: GEF should be easy for developers to learn and use.
 An experienced developer should be able to understand all of
 GEF's implementation in just 3 days.</li>

 <li>Usability: GEF must provide a user interface that is easy for end
 users</li>

 <li>Adaptability: GEF should be easily adaptable to a wide range of
 applications</li>

 <li>Scalability: GEF must be efficient on diagrams up to a thousand
 elements</li>

</ol>


<p>Two important things set GEF apart from most other graph editing
frameworks:<p>

<ul>
 <li>The main objects in GEF a fairly concrete and familiar to people
 who have experience using drawing tools.  E.g., shapes, groups,
 selection handles, commands, and layers.  In contrast, many other
 frameworks revolve around abstract concepts such as constraints or
 event handlers.</li>

 <li>GEF provides both a simple, concrete representation of connected
 graphs, as well as a highly flexible graph model that is similar to
 Swing's TreeModel and TableModel.  These "Model" classes allow
 existing application objects to be visualized as graphs without
 change.  They also allow for multiple diagrammatic views of the same
 underlying set of objects.</li>

</ul>


<p>GEF can be used to for both applications and applets. Although,
some features (e.g., saving files) are only available in
applications.</p>


</div>
</body>
</html>
